/*
Copyleft 2006 by T.S.Yo
*/


package exp.util;
import ec.*;
import ec.coevolve.*;
import ec.simple.*;

/* 
 * ExpConfig.java
 * 
 * Created: 2006.11.06
 * By: T.S.Yo
 */

/**
 * ExpConfig is an interface which defines methods for:
 *   - selecting test points
 *   - scoring
 * for experiments.
 *
 * @author T.S.Yo
 * @version 1.0 
 */

public interface MyExpProblemForm extends GroupedProblemForm
{
/* Parameters for Experiments
    // Select test points for evaluation. Options including: 
    //    1) Fixed random sampling
    //    2) New random sampling
    //    3) All test points
    //    4) Coevolution 
    public static final String TPOINTS = "SelectTestPoints";
    public static final int TPOINT_FIXED_RANDOM =1;
    public static final int TPOINT_NEW_RANDOM   =2;
    public static final int TPOINT_ALL          =3;
    public static final int TPOINT_COEVOLVUTION =4;
    // Define the scoring method. Options including: 
    //    1) Average score 
    //    2) Weighted score
    //    3) MOO score
    //    4) Similarity
    //    5) Average Informativeness
    //    6) Weighted Informativeness
    public static final String SCORING = "Scoring";
    public static final int SCORE_AVERAGE    =1;
    public static final int SCORE_WEIGHTED   =2;
    public static final int SCORE_MOO        =3;
    public static final int SCORE_SIMILARITY =4;
    public static final int SCORE_AVE_INFO   =5;
    public static final int SCORE_WEI_INFO   =6;
*/
    // Setup objective test points for later evaluation
    public void selectObjTP();
    
    // Evaluate objective fitness with selected test points
    public float[] evalObjFitness(final EvolutionState state, 
                                  final Population pop);
}
